package com.example.month11.vp_tab.fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.recyclerview01.R;
import com.example.utils.L;

/**
 * ViewPager中的 Fragment
 */
public class TabFragment extends Fragment {
    public static final String BUNDLE_KEY_TITLE = "key_title";

    private TextView mTvTitle;
    private String mTitle; // 外部传入的 title

    // 回调事件三件套
    public interface OnTitleClickListener {
        void click(String title);
    }

    private OnTitleClickListener mListener;

    public void setOnTitleClickListener(OnTitleClickListener listener) {
        this.mListener = listener;
    }


    // 静态工厂方法。便于使用setArguments，避免页面销毁，丢失Arguments数据。
    public static TabFragment newInstance(String title) {
        Bundle bundle = new Bundle();
        bundle.putString(BUNDLE_KEY_TITLE, title);
        TabFragment tabFragment = new TabFragment();
        tabFragment.setArguments(bundle); // 传递参数给Fragment。系统重建的时候。Arguments中的数据，还能恢复。
        return tabFragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 获取Activity传递的数据
        Bundle arguments = getArguments();
        if (arguments != null) {
            mTitle = arguments.getString(BUNDLE_KEY_TITLE, "");
        }
        L.d("onCreate", "onCreate:" + mTitle);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        return inflater.inflate(R.layout.fragment_tab, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mTvTitle = view.findViewById(R.id.tv_title);
        mTvTitle.setText(mTitle);

        mTvTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 写法1：不推荐使用
                // WeChatHomeActivity activity = (WeChatHomeActivity) getActivity();
                // activity.changeWeChatTab("Fragment调用了了。");

                // 写法2：Fragment触发事件，Activity去响应事件。
                if (mListener != null) {
                    mListener.click("Fragment"); // 回调事件出去。通信的写法。
                }
            }
        });
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    // 暴露给外界操作
    public void changeTitle(String title) {
        // if (!isResumed()) return;
        // Fragment还没有添加到Activity中.保证onViewCreated已经被执行了.
        if (!isAdded()) return;
        mTvTitle.setText(title);
    }
}
